﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;

namespace Ocean.His.MedicalInsurance
{
    /// <summary>
    /// 5101
    /// 科室信息查询
    /// </summary>
    [DataContract]
    public class SI5101Data
    {
        /// <summary>
        /// 交易编号
        /// 参数类型：字符型
        /// 参数长度：4
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "infno")]
        public string Infno { get; set; }

        /// <summary>
        /// 发送方报文ID
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "msgid")]
        public string Msgid { get; set; }

        /// <summary>
        /// 就医地医保区划
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "mdtrtarea_admvs")]
        public string MdtrtareaAdmvs { get; set; }

        /// <summary>
        /// 参保地医保区划
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "insuplc_admdvs")]
        public string InsuplcAdmdvs { get; set; }

        /// <summary>
        /// 接收方系统代码
        /// 参数类型：字符型
        /// 参数长度：10
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "recer_sys_code")]
        public string RecerSysCode { get; set; }

        /// <summary>
        /// 设备编号
        /// 参数类型：字符型
        /// 参数长度：100
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "dev_no")]
        public string DevNo { get; set; }

        /// <summary>
        /// 设备安全信息
        /// 参数类型：字符型
        /// 参数长度：2000
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "dev_safe_info")]
        public string DevSafeInfo { get; set; }

        /// <summary>
        /// 数字签名信息
        /// 参数类型：字符型
        /// 参数长度：1024
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "cainfo")]
        public string Cainfo { get; set; }

        /// <summary>
        /// 签名类型
        /// 参数类型：字符型
        /// 参数长度：10
        /// 代码标识：Y
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "signtype")]
        public string Signtype { get; set; }

        /// <summary>
        /// 接口版本号
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "infver")]
        public string Infver { get; set; }

        /// <summary>
        /// 经办人类别
        /// 参数类型：字符型
        /// 参数长度：3
        /// 代码标识：Y
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "opter_type")]
        public string OpterType { get; set; }

        /// <summary>
        /// 经办人
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "opter")]
        public string Opter { get; set; }

        /// <summary>
        /// 经办人姓名
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "opter_name")]
        public string OpterName { get; set; }

        /// <summary>
        /// 交易时间
        /// 参数类型：字符型
        /// 参数长度：19
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "inf_time")]
        public string InfTime { get; set; }

        /// <summary>
        /// 定点医药机构编号
        /// 参数类型：字符型
        /// 参数长度：12
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "fixmedins_code")]
        public string FixmedinsCode { get; set; }

        /// <summary>
        /// 定点医药机构名称
        /// 参数类型：字符型
        /// 参数长度：200
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "fixmedins_name")]
        public string FixmedinsName { get; set; }

        /// <summary>
        /// 签到流水号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "sign_no")]
        public string SignNo { get; set; }

    }

    /// <summary>
    /// 
    /// </summary>
    [DataContract]
    public class SI5101InputModel
    {
        [DataMember(Name = "data")]
        public SI5101Data SI5101Data { get; set; }
    }

    /// <summary>
    /// 5101 人员基本信息获取
    /// </summary>
    [DataContract]
    public class SI5101RequestModel : SIBaseRequestModel
    {
        /// <summary>
        /// 交易输入
        /// </summary>
        [DataMember(Name = "input")]
        public SI5101InputModel Input { get; set; }

        public SI5101RequestModel(MedicalInsuranceOption medicalInsuranceOption, 
            SI5101Data sI5101Data,string insuplcAdmdvs) : base(medicalInsuranceOption)
        {
            Infno = "5101";
            InsuplcAdmdvs = insuplcAdmdvs;
            Input = new SI5101InputModel();
            Input.SI5101Data = sI5101Data;
        }
    }
}
